於D15~D17:「例外」該主題開始,使用的範例中提到 java.lang.ArrayIndexOutOfBoundsException
例外類別,那麼本篇將列出較常見的一些例外類別:
繼承來自java.lang.Throwable
類別的 兩大類, java.lang.Error
與 java.lang.Exception
Error 是用來處理會嚴重影響程式的錯誤,所以我們不會去捕捉這類的錯誤。
Exception 為一些較一般的例外,而且我們可以做適當的處理使程式繼續執行。
有趣的是,如果拋出的例外是 RuntiomeException 類別,或是其下方的子類別,
就算不撰寫例外處理的程式敘述,依然是可以 編譯成功。 (如「例外」該主題開始,使用的範例)
相反的,如果拋出為 IOException 是必須撰寫例外處理的程式敘述。
所以當例外發生,catch() 接收 Throwable 子類別產生的物件。
在[Java]例外處理 exception handing(範例實作)文末提到了
catch(ArrayIndexOutOfBoundsException e)
catch() 括號內只會接收子類別產生的物件,其他物件是不會接收的。
而這個 e 我們從上方的流程關係圖可以得知,
Throwable -> Exception -> RuntimeException
-> IndexOutOfBoundsException -> ArrayIndexOutOfBoundsException 所建立的物件。
於下篇將會談,那麼 catch() 括號內只接收一種類別,如何捕捉多個例外?
如果您喜歡我的文章,可以至 4xDev 的 Java 學習系列閱讀更多 Java 文章。